//
//  XTTitleButton.swift
//  MyBlog
//
//  Created by victor on 16/12/23.
//  Copyright © 2016年 victor. All rights reserved.
//

import UIKit

class XTTitleButton: UIButton {
    /// 重载构造函数 因为按钮里默认是没有这个构造方法的
    /// - title 如果是 nil，就显示`首页`
    /// - 如果不为 nil，显示 title 和 箭头图像
    init(title: String?) {
        super.init(frame: CGRect())
        
        // 判断title 是否为nil
        if title == nil {
            setTitle("首页", for: .normal)
        } else {
            // + " " 是为了加间距
            setTitle(title! + " ", for: .normal)
            
            // 设置图像
            setImage(UIImage(named: "navigationbar_arrow_down"), for: .normal)
            setImage(UIImage(named: "navigationbar_arrow_up"), for: .selected)
        }
        
        // 设置字体和颜色
        titleLabel?.font = UIFont.boldSystemFont(ofSize: 17)
        setTitleColor(UIColor.darkGray, for: .normal)
        
        sizeToFit()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    /// 重新布局子视图
    override func layoutSubviews() {
        super.layoutSubviews()
        
        // 判断 label 和 imageView 是否同时存在
        guard let titleLabel = titleLabel,let imageView = imageView else {
            return
        }
        
        // 将 label 的 x 向左移动 imageView 的宽度
        // OC 中不允许直接修改`结构体内部的值`
        // Swift 中可以直接修改
        titleLabel.frame.origin.x = 0
        
        // 将 imageView 的 x 向右移动 label 的宽度
        imageView.frame.origin.x = titleLabel.bounds.width
        //titleLabel.frame = titleLabel.frame.offsetBy(dx: -imageView.frame.width, dy: 0)
        //imageView.frame = imageView.frame.offsetBy(dx: titleLabel.frame.width, dy: 0)
    }

}
